{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Local Embeddings with OpenVINO\n",
    "\n",
    "[OpenVINO™](https://github.com/openvinotoolkit/openvino) is an open-source toolkit for optimizing and deploying AI inference. The OpenVINO™ Runtime supports various hardware [devices](https://github.com/openvinotoolkit/openvino?tab=readme-ov-file#supported-hardware-matrix) including x86 and ARM CPUs, and Intel GPUs. It can help to boost deep learning performance in Computer Vision, Automatic Speech Recognition, Natural Language Processing and other common tasks.\n",
    "\n",
    "Hugging Face embedding model can be supported by OpenVINO through ``OpenVINOEmbedding`` or ``OpenVINOGENAIEmbedding``class, and OpenClip model can be through ``OpenVINOClipEmbedding`` class."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you're opening this Notebook on colab, you will probably need to install LlamaIndex 🦙."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install llama-index-embeddings-openvino"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install llama-index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Exporter\n",
    "\n",
    "It is possible to export your model to the OpenVINO IR format with `create_and_save_openvino_model` function, and load the model from local folder."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home2/ethan/intel/llama_index/llama_test/lib/python3.10/site-packages/openvino/runtime/__init__.py:10: DeprecationWarning: The `openvino.runtime` module is deprecated and will be removed in the 2026.0 release. Please replace `openvino.runtime` with `openvino`.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saved OpenVINO model to ./bge_ov. Use it with `embed_model = OpenVINOEmbedding(model_id_or_path='./bge_ov')`.\n"
     ]
    }
   ],
   "source": [
    "from llama_index.embeddings.huggingface_openvino import OpenVINOEmbedding\n",
    "\n",
    "OpenVINOEmbedding.create_and_save_openvino_model(\n",
    "    \"BAAI/bge-small-en-v1.5\", \"./bge_ov\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Loading\n",
    "If you have an Intel GPU, you can specify `device=\"gpu\"` to run inference on it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ov_embed_model = OpenVINOEmbedding(model_id_or_path=\"./bge_ov\", device=\"cpu\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "384\n",
      "[-0.0030246784444898367, -0.012189766392111778, 0.04163273051381111, -0.037758368998765945, 0.02439723163843155]\n"
     ]
    }
   ],
   "source": [
    "embeddings = ov_embed_model.get_text_embedding(\"Hello World!\")\n",
    "print(len(embeddings))\n",
    "print(embeddings[:5])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Loading with OpenVINO GenAI\n",
    "\n",
    "To avoid the dependencies of PyTorch in runtime, you can load your local embedding model with ``OpenVINOGENAIEmbedding``class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install llama-index-embeddings-openvino-genai"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home2/ethan/intel/llama_index/llama_test/lib/python3.10/site-packages/openvino/runtime/__init__.py:10: DeprecationWarning: The `openvino.runtime` module is deprecated and will be removed in the 2026.0 release. Please replace `openvino.runtime` with `openvino`.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "from llama_index.embeddings.openvino_genai import OpenVINOGENAIEmbedding\n",
    "\n",
    "ov_embed_model = OpenVINOGENAIEmbedding(model_path=\"./bge_ov\", device=\"CPU\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "384\n",
      "[-0.0030246784444898367, -0.012189766392111778, 0.04163273051381111, -0.037758368998765945, 0.02439723163843155]\n"
     ]
    }
   ],
   "source": [
    "embeddings = ov_embed_model.get_text_embedding(\"Hello World!\")\n",
    "print(len(embeddings))\n",
    "print(embeddings[:5])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## OpenClip Model Exporter\n",
    "Class `OpenVINOClipEmbedding` can support exporting and loading open_clip models with OpenVINO runtime."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install open_clip_torch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from llama_index.embeddings.huggingface_openvino import (\n",
    "    OpenVINOClipEmbedding,\n",
    ")\n",
    "\n",
    "OpenVINOClipEmbedding.create_and_save_openvino_model(\n",
    "    \"laion/CLIP-ViT-B-32-laion2B-s34B-b79K\",\n",
    "    \"ViT-B-32-ov\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## MultiModal Model Loading\n",
    "If you have an Intel GPU, you can specify `device=\"GPU\"` to run inference on it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ov_clip_model = OpenVINOClipEmbedding(\n",
    "    model_id_or_path=\"./ViT-B-32-ov\", device=\"CPU\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Embed images and queries with OpenVINO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "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",
      "image/png": "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",
      "text/plain": [
       "<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=225x225>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Image dim: 512\n",
      "Image embed: [-0.03019799292087555, -0.09727513045072556, -0.6659489274024963, -0.025658488273620605, 0.05379948765039444]\n",
      "Text dim: 512\n",
      "Text embed: [-0.15816599130630493, -0.25564345717430115, 0.22376027703285217, -0.34983670711517334, 0.31968361139297485]\n",
      "Cosine similarity: 0.27307014923203976\n"
     ]
    }
   ],
   "source": [
    "from PIL import Image\n",
    "import requests\n",
    "from numpy import dot\n",
    "from numpy.linalg import norm\n",
    "\n",
    "image_url = \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcStMP8S3VbNCqOQd7QQQcbvC_FLa1HlftCiJw&s\"\n",
    "im = Image.open(requests.get(image_url, stream=True).raw)\n",
    "print(\"Image:\")\n",
    "display(im)\n",
    "\n",
    "im.save(\"logo.jpg\")\n",
    "image_embeddings = ov_clip_model.get_image_embedding(\"logo.jpg\")\n",
    "print(\"Image dim:\", len(image_embeddings))\n",
    "print(\"Image embed:\", image_embeddings[:5])\n",
    "\n",
    "text_embeddings = ov_clip_model.get_text_embedding(\n",
    "    \"Logo of a pink blue llama on dark background\"\n",
    ")\n",
    "print(\"Text dim:\", len(text_embeddings))\n",
    "print(\"Text embed:\", text_embeddings[:5])\n",
    "\n",
    "cos_sim = dot(image_embeddings, text_embeddings) / (\n",
    "    norm(image_embeddings) * norm(text_embeddings)\n",
    ")\n",
    "print(\"Cosine similarity:\", cos_sim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For more information refer to:\n",
    "\n",
    "* [OpenVINO LLM guide](https://docs.openvino.ai/2024/learn-openvino/llm_inference_guide.html).\n",
    "\n",
    "* [OpenVINO Documentation](https://docs.openvino.ai/2024/home.html).\n",
    "\n",
    "* [OpenVINO Get Started Guide](https://www.intel.com/content/www/us/en/content-details/819067/openvino-get-started-guide.html).\n",
    "\n",
    "* [RAG example with LlamaIndex](https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-rag-llamaindex)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
